---
title: Rating-period comparison helpers
summary: Provides shared market-type and equality tests for rating periods via extension methods.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Business.Policy
reference_type: package
operation_id: op-15-rating-period-comparison
trigger: Extension method call on iPeriodRatingInfo
---

# Rating-period comparison helpers

Provides shared market-type classification and equality/hashing helpers for objects implementing `iPeriodRatingInfo`.

| Field | Value |
| --- | --- |
| **Operation ID** | op-15-rating-period-comparison |
| **Trigger** | Extension method call on `iPeriodRatingInfo` |
| **Inputs** | `iPeriodRatingInfo` instance(s) |
| **Outputs** | `Boolean` / `Integer` hash |
| **Primary components** | `PeriodRatingInfoExtensions.IsVoluntary`, `.IsAssignedRisk`, `.BaseEquals`, `.BaseGetHashCode` |
| **Entry point** | SAIF.Business.Policy/PeriodRatingInfoExtensions.vb |

## Steps

1. `IsVoluntary`/`IsAssignedRisk` compare `MarketType` against the corresponding `Enums.MarketTypes` member ([BR-POL-015](../business-rules.md#br-pol-015-rating-period-market-type-classification)).
2. `BaseEquals` requires all eight rating attributes to match ([BR-POL-018](../business-rules.md#br-pol-018-rating-period-equality)).
3. `BaseGetHashCode` concatenates the same eight attribute strings and hashes the result.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Caller invokes extension<br>method"]) --> Which{Which method?}
	Which -->|IsVoluntary /<br>IsAssignedRisk| CompareMarket["Compare MarketType against<br>Enums.MarketTypes member"]
	CompareMarket --> ReturnBool(["Return Boolean result"])
	Which -->|BaseEquals| CompareAll["Compare all eight rating<br>attributes"]
	CompareAll --> ReturnEq(["Return True only if all<br>eight attributes match"])
	Which -->|BaseGetHashCode| Concat["Concatenate the same eight<br>attribute strings"]
	Concat --> HashResult["Hash the concatenated<br>string"]
	HashResult --> ReturnHash(["Return Integer hash"])
```

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

## Sources
- `SAIF.Business.Policy/PeriodRatingInfoExtensions.vb`
